﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Abp.Application.Services;
using FwProject.Restaurant.Dto;
using X.PagedList;

namespace FwProject.Restaurant
{
    public interface IDepositAppService : IApplicationService
    {
        Task<Guid> Create(DepositInput input);

        Task<Guid> CreateReturnDeposit(DepositInput input);

        Task Update(Guid id, DepositInput input);
        DepositDto GetById(Guid id);

        Task<decimal> GetRestaurantModifiableAmountAsync(Guid RestaurantId, Guid DepositId, DepositType depositType);

        Task UpdateStatus(Guid id);

        Task UpdateExamineStatus(Guid id);

        Task UpdateBackStatus(Guid id);

        Task<IPagedList<DepositDto>> GetCollectDepositPagedListAsync(int pageIdx, int pageSize, DateTime? beginTime, DateTime? endTime, DepositStatus? depositStatus, string restaurantName);

        Task<List<DepositDto>> GetCollectDepositListAsync(DateTime? beginTime, DateTime? endTime, DepositType? type, DepositStatus? depositStatus, string restaurantName);

        Task<IPagedList<DepositDto>> GetReturnDepositPagedListAsync(int pageIdx, int pageSize, DateTime? beginTime, DateTime? endTime, DepositStatus? depositStatus, string RestaurantName);


        /// <summary>
        /// 根据餐厅编号获取餐厅是否有押金数据
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        bool GetRestaurantByDeposit(Guid Id);
        /// <summary>
        /// 根据餐厅id获取押金信息
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        DepositDto GetRestaurantIdByDeposit(Guid Id);

    }
}
